上回我們在腳本中加入了環境變數,有助於我們在重複使用腳本時,透過修改環境變數即可重新進行執行工作,不過我們上回的腳本內容對於要執行的命令列依舊是逐條列出,語法如下:
$SERVER = '.'
$FILENAME = 'FirstDataBase.sql'
$PATH = "C:\temp"
$DATABASE_LIST = 'One','Two','Three','Four','Five'
sqlcmd -S $SERVER -d $DATABASE_LIST[0] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[1] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[2] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[3] -i $PATH\$FILENAME
sqlcmd -S $SERVER -d $DATABASE_LIST[4] -i $PATH\$FILENAME
可以想像,當我們需要被執行腳本的資料庫如果變多,我們需要在我們的變數$DATABASE_LIST增加項目,並且執行的命令列需要再增加,使得我們在使用上依然有不少的限制。
下面我們嘗試用For迴圈來解決這個問題,我們依照需求使用的For迴圈語法如下,詳細各語法請參考連結
FOR ({起始值};{執行條件};{增量條件})
{
程式主要邏輯
}
我們在這邊多建立一個變數作為迴圈要執行的終止條件(DATALIST的個數-1),接著將主要程式邏輯寫進迴圈中,語法如下
$SERVER = '.'
$FILENAME = 'FirstDataBase.sql'
$PATH = "C:\temp"
$DATABASE_LIST = 'One','Two','Three','Four','Five'
$COUNT = $DATABASE_LIST.Count - 1
FOR($i=0;$i -lt $COUNT;$i++)
{
sqlcmd -S $SERVER -d $DATABASE_LIST[$i] -i $PATH\$FILENAME
}
將我們改寫過的語法執行後,可以得到跟之前相同的結果,不同的是若改變DATABASE_LIST的內容,無論是數量或是資料庫的名稱,都能執行相同的功能,不過依然還有不少的內容是我們能優化的。
更多小知識,我們下次見~~